/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ControleAcademico.Model.Pojo;

import java.io.Serializable;
import java.util.*;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.ManyToOne;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;

/**
 *
 * @author arthur
 * @author renan
 * @author tais
 * @author vinicius
 */

@Entity
@Table(name="Atividade")
public class Atividade implements Serializable{
    
    
    // Atributos
    @Id
    @GeneratedValue(strategy= GenerationType.IDENTITY)
    @Column(name = "id",unique=true,nullable=false)
    private int id;
    
    @Column(name = "Nome",length = 45)
    private String nome;
    
    @Column(name = "Tipo",length = 45)
    private String tipo;
    
    @Column(name = "Data_Atividade")
    @Temporal(javax.persistence.TemporalType.DATE)
    private Calendar data;
    
    @Column(name = "Valor")
    private double valor; 
    
    @JoinColumn(name = "Historico_Atividades",referencedColumnName= "id")
    @OneToMany(mappedBy="avaliacao")
    private ArrayList<HistoricoAtividades> historicoAtividades;
    
    @JoinColumn(name = "Turmas",referencedColumnName="id")
    @ManyToOne(optional = false , fetch = FetchType.LAZY)
    private Turma turma;

    @JoinColumn(name = "Professor",referencedColumnName= "id")
    @ManyToOne(optional = false , fetch =FetchType.LAZY)
    private Professor elaborador;

    public Atividade() {
    }
    
    
    //Metodos
    public int getId() {return this.id;}
    public void setId(int id) {this.id = id;}
    public String getNome(){return this.nome;}
    public void setNome(String nome){this.nome = nome;}
    public String getTipo(){return this.tipo;}
    public void setTipo(String tipo){this.tipo = tipo;}
    public Calendar getdata(){return this.data;}
    public void setData(Calendar data){this.data = data;}
    public double getValor(){return this.valor;}
    public void setValor(double valor){this.valor = valor;}
    public Turma getTurma(){return this.turma;}

    public Professor getElaborador(){return this.elaborador;}
    
    public Atividade(String nome, String tipo, Calendar data, double valor, Turma turma,
            Professor elaborador, int id){
        
        this.nome = nome;
        this.tipo = tipo;
        this.data = data;
        this.valor = valor;
        this.turma = turma;
        this.historicoAtividades = new ArrayList<HistoricoAtividades>();
        this.elaborador = elaborador;
        this.id = id;
        turma.adicionarAtividade(this);
    }
    
    public void adicionarHistoricoAtividade (HistoricoAtividades historicoAtividades){
         this.historicoAtividades.add(historicoAtividades);
    }

    
    @Override
    public boolean equals(Object obj) {
        
        if(this == obj) {
            return true;
        }
        
        if(!(obj instanceof Atividade)) {
            return false;
        }
        
        
	Atividade c = (Atividade) obj;
        Turma turma1 = c.getTurma();
        Turma turma2 = this.getTurma();
        
        String nome1 = c.getNome();
        String nome2 = this.getNome();
        
        
        if((nome1.equals(nome2) == true) && (turma1.equals(turma2) == true)) {
            return true;
        } else {
            return false;
        }
    }
  
}